<?php

/**
 * \file
 * Classe `Enum`.
 */

namespace pilar\Entities /* \cond */ ; /* \endcond */
{

/**
 * Membre d'énumération.
 *
 * \since 10/02/2009
 * \author Matthieu OVIEDO <matthieu.oviedo@gmail.com>
 */
class Enum extends Member {

protected function loadDefaultParams() {
 parent::loadDefaultParams();

 $this->params->set(array(
  'formClass' => '\\pilar\\SimpleFormMembers\\SelectBox'
 ));

 $this->params->define(array(
  'options' => array()
   /**
    * Options disponibles sous la forme d'un tableau qui à une valeur
    * associe un libellé. Par exemple :
    *
    *   array(
    *    'male' => 'Homme',
    *    'female' => 'Femme'
    *   )
    *
    * La valeur est l'information enregistrée en base de données, est
    * l'intitulé est son équivalent perçu par l'utilisateur.
    */

 ));
}


protected function initialize() {
 parent::initialize();

 $this->addField(
  new \pilar\Entities\Fields\Enum(array(
   'options' => $this->get('options')
  ))
 );
}


protected function defaultFormMemberParams() {
 return array(
  'options' => $this->get('options')
 );
}


/**
 * Vérifie que les valeurs assignées au membre soient bien dans la liste
 * d'options;
 *
 * \return \c TRUE si \a $value est acceptée, \c FALSE sinon.
 */
public function acceptsFieldValue($fieldName, $value) {
 $options = $this->get('options');
 return isset($options[$value]);
}


} // Class.

} // Namespace.

?>
